package com.shuiyihan.design.structure.proxy.jdk;

import java.lang.reflect.Proxy;

/**
 * 代理模式测试
 *
 * @since 2021/8/27
 **/
public class JdkMediumTest {
    /*
     * JDK 代理 步骤
     *
     * 1. 被代理的类必须实现一个接口
     * 2. 用JDK代理,被代理的过程需要实现InvocationHandler
     * 3. 代理过程再invoke中实现
     * 4. 创建代理对象Proxy.newProxyInstance实现
     */

    public static void main(String[] args) {
        //1.指定被创建代理的对象
        LandlordService landlordService=new LandlordServiceImpl();
        //2.创建代理
        LandlordService landlordServiceProxy = (LandlordService) Proxy.newProxyInstance(
                LandlordServiceImpl.class.getClassLoader(),
                //被创建代理对象所实现的所有接口
                LandlordServiceImpl.class.getInterfaces(),
                new JdkMedium(landlordService));
        //3.调用代理中指定的方法
        landlordServiceProxy.pay("张三");
    }


}
